package views.mediators {
  import com.axon.mvc.patterns.mediator.AxMediatorPopUp;

  import flash.display.DisplayObject;

  import helpers.Constants;
  import helpers.Verbs;

  import models.vo.Pleito;

  import views.components.PleitoPopUpApreciacaoView;

  public class PleitoPopUpApreciacaoMediator extends AxMediatorPopUp {
    private var action:String;

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function PleitoPopUpApreciacaoMediator(parent:DisplayObject, pleito:Pleito, action:String) {
      this.action = action;
      super(parent, pleito);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function get view():PleitoPopUpApreciacaoView {
      return viewComponent as PleitoPopUpApreciacaoView;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    override protected function initialize():void {
      regResponseInterest(Pleito, [Verbs.AVANCAR, Verbs.VOLTAR_PARA_ANALISE, Verbs.ARQUIVAR]);
    }

    override protected function viewValueObjectOk():void {

      view.lblDataLaudo.visible = false;
      view.dtDataLaudo.visible = false;

      view.lblNumeroLaudo.visible = false;
      view.txtNumeroLaudo.visible = false;

      var pleito:Pleito = Pleito(view.vo);

      var numParecerEditado:String = pleito.analise.sequencial.toString();
      while (numParecerEditado.length < 4)
        numParecerEditado = "0" + numParecerEditado;
      numParecerEditado += "/" + pleito.analise.ano.toString();

      var numLaudoEditado:String;
      if (pleito.numeroLaudo == 0)
        numLaudoEditado = "        ";
      else {
        numLaudoEditado = pleito.numeroLaudo.toString();
        while (numLaudoEditado.length < 4)
          numLaudoEditado = "0" + numLaudoEditado;
      }
      var ano:int = pleito.dataLaudo ? pleito.dataLaudo.fullYear : (new Date).fullYear;
      numLaudoEditado += "/" + ano.toString();

      view.action = action;

      switch (action) {

        // AVANÇAR -----------------------------------------------------------------------------------

        case Verbs.AVANCAR:

          view.dtDataLaudo.selectedDate = new Date();

          if (pleito.getIncentivo().mnemonic == "red_75_irpj" || pleito.getIncentivo().mnemonic == "red_12_5_irpj") {
            view.lblDataLaudo.text = "Data do Laudo";
            view.lblNumeroLaudo.text = "Número do Laudo";
            view.dtDataLaudo.selectedDate = pleito.dataLaudo;
            view.txtNumeroLaudo.text = pleito.numeroLaudo.toString();
          } else {
            view.lblDataLaudo.text = "Data da Portaria";
            view.lblNumeroLaudo.text = "Número da Portaria";
            view.dtDataLaudo.selectedDate = pleito.dataPortaria;
            view.txtNumeroLaudo.text = pleito.numeroPortaria.toString();
          }

          view.lblDataLaudo.visible = (pleito.status == Constants.STATUS_PLEITO_DELIBERACAO);
          view.dtDataLaudo.visible = (pleito.status == Constants.STATUS_PLEITO_DELIBERACAO);

          view.lblNumeroLaudo.visible = (pleito.status == Constants.STATUS_PLEITO_DELIBERACAO);
          view.txtNumeroLaudo.visible = (pleito.status == Constants.STATUS_PLEITO_DELIBERACAO);

          switch (pleito.status) {

          case Constants.STATUS_PLEITO_ANALISE:
            view.title = 'Encaminhar para Certificação';
            break;

          case Constants.STATUS_PLEITO_CERTIFICACAO:
            view.title = 'Encaminhar para Recomendação';
            if (pleito.getIncentivo().mnemonic == "red_75_irpj" || pleito.getIncentivo().mnemonic == "red_12_5_irpj")
              view.txtArComplemento1.text = 'Concordo com a análise e as condições estabalecidas no Parecer CGIF nº ' + numParecerEditado +
                ', referentes ao pleito de emissão do Laudo Constitutivo.';
            else
              view.txtArComplemento1.text = 'Concordo com a análise e as condições estabalecidas no Parecer CGIF nº ' + numParecerEditado +
                ', referentes ao direito do benefício fiscal pleiteado.';
            break;

          case Constants.STATUS_PLEITO_RECOMENDACAO:
            view.title = 'Encaminhar para Deliberação';
            if (pleito.getIncentivo().mnemonic == "red_75_irpj" || pleito.getIncentivo().mnemonic == "red_12_5_irpj")
              view.txtArComplemento1.text = 'Concordo com o Parecer CGIF nº ' + numParecerEditado +
                ' e recomendo a aprovação do Laudo Constitutivo à deliberação da Diretoria Colegiada da SUDENE, com base na competência que lhe foi atribuída pelo ' +
                'inciso XVII do art. 8º do Decreto nº 6.219, de 04 de outubro de 2007.';
            else
              view.txtArComplemento1.text = 'Recomendo a aprovação do Parecer CGIF nº ' + numParecerEditado +
                ' e submeto-o à deliberação da Diretoria Colegiada da SUDENE, com base na competência que lhe foi atribuída pelo  ' +
                'inciso XVII do art. 8º do Decreto nº 6.219, de 04 de outubro de 2007.';
            break;

          case Constants.STATUS_PLEITO_DELIBERACAO:
            view.title = 'Aprovar Pleito';
            if (pleito.getIncentivo().mnemonic == "red_75_irpj" || pleito.getIncentivo().mnemonic == "red_12_5_irpj")
              view.txtArComplemento1.text = 'A Diretoria Colegiada da SUDENE, em reunião realizada nesta data, aprova o Laudo Constitutivo nº ' + numLaudoEditado +
                ', referente ao pleito do benefício fiscal de "' + pleito.incentivo.descricao + '", em favor da empresa ' + pleito.empreendimento.pjObjeto.razaoSocial +
                ', CNPJ: ' + pleito.empreendimento.pjObjeto.cnpjFormatado() + '.';
            else
              view.txtArComplemento1.text = 'A Diretoria Colegiada da SUDENE, em reunião realizada nesta data, aprova o Parecer CGIF nº ' + numParecerEditado +
                ', referente ao pleito do benefício fiscal de "' + pleito.incentivo.descricao + '", em favor da empresa ' + pleito.empreendimento.pjObjeto.razaoSocial +
                ', CNPJ: ' + pleito.empreendimento.pjObjeto.cnpjFormatado() + '.';
            break;
        }

          break;

        // VOLTAR PARA ANÁLISE -----------------------------------------------------------------------

        case Verbs.VOLTAR_PARA_ANALISE:

          view.title = 'Voltar para Análise';
          break;

        // ARQUIVAR ----------------------------------------------------------------------------------

        case Verbs.ARQUIVAR:

          view.title = 'Arquivar';
          break;
      }
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function respPleitoAvancarSuccess(sender:Object, body:Object, extraInfo:Object):void {
      closePopUp();
    }

    public function respPleitoAvancarFailure(sender:Object, body:Object, extraInfo:Object):void {
      view.errorString = "Falha na gravação dos dados (provavelmente algum problema no servidor).";
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function respPleitoVoltarParaAnaliseSuccess(sender:Object, body:Object, extraInfo:Object):void {
      closePopUp();
    }

    public function respPleitoVoltarParaAnaliseFailure(sender:Object, body:Object, extraInfo:Object):void {
      view.errorString = "Falha na gravação dos dados (provavelmente algum problema no servidor).";
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function respPleitoArquivarSuccess(sender:Object, body:Object, extraInfo:Object):void {
      closePopUp();
    }

    public function respPleitoArquivarFailure(sender:Object, body:Object, extraInfo:Object):void {
      view.errorString = "Falha no arquivamento (provavelmente algum problema no servidor).";
    }

  }
}